Handle the window being destroyed in do_synthesize_crossing_event
authorAlexander Larsson <alexl@redhat.com>
Thu, 11 Jun 2009 19:56:02 +0000 (21:56 +0200)
committerAlexander Larsson <alexl@redhat.com>
Thu, 11 Jun 2009 19:56:02 +0000 (21:56 +0200)
This can happen since we ref the window and do the function in an idle.

gdk/gdkwindow.c

index 7c5011218ac1e255129cc4bbff4905231578bf3d..b843b088689ced574f2d36f560c29a389b1d80d2 100644 (file)
@@ -8703,11 +8703,14 @@ do_synthesize_crossing_event (gpointer data)
   changed_toplevel = data;
   changed_toplevel_priv = (GdkWindowObject *)changed_toplevel;
 
+  changed_toplevel_priv->synthesize_crossing_event_queued = FALSE;
+
+  if (GDK_WINDOW_DESTROYED (changed_toplevel))
+    return;
+
   display = gdk_drawable_get_display (changed_toplevel);
   serial = _gdk_windowing_window_get_next_serial (display);
 
-  changed_toplevel_priv->synthesize_crossing_event_queued = FALSE;
-
   if (changed_toplevel == display->pointer_info.toplevel_under_pointer)
     {
       new_window_under_pointer =